/*************************************************************************************************************************
Multi-Include-Prevent Segment
**************************************************************************************************************************/
#ifndef IF_SWITCH_H__
#define IF_SWITCH_H__

/*************************************************************************************************************************
Include File Segment
**************************************************************************************************************************/
#include "IF_GxwLib.h"
#include "Switch.h"
/*************************************************************************************************************************
Type Segment
**************************************************************************************************************************/

/*************************************************************************************************************************
Define Segment
**************************************************************************************************************************/
#define PHO_INT_1_INDEX		0
#define PHO_INT_2_INDEX		1
#define PHO_INT_3_INDEX 	2
#define PHO_INT_4_INDEX 	3
#define PARK_SW_INDEX		4
#define IG_SIG_INDEX		5


#define HALL1_INDEX		3
#define HALL2_INDEX		2
#define HALL3_INDEX 	1
#define HALL4_INDEX 	0

#define GEARS_INIT   0
#define GEARS_S      1
#define GEARS_N      2
#define GEARS_D      3
#define GEARS_R      4
#define GEARS_P      5
#define GEARS_ERR    6

#define NO_GEAR_DETECTED         0xAA

/*************************************************************************************************************************
Enum Segment
**************************************************************************************************************************/

/*************************************************************************************************************************
Union Segment
**************************************************************************************************************************/

/*************************************************************************************************************************
Structure Segment
**************************************************************************************************************************/

/*************************************************************************************************************************
Global Variable Declare Segment
**************************************************************************************************************************/

/*************************************************************************************************************************
Function Declare Segment
**************************************************************************************************************************/
extern void IF_Switch_Init(void);
extern void IF_SwitchScanTask_5ms(void);
extern void IF_SwitchScanTask_10ms(void);
extern uint8_t IF_SwitchGetGearCurState(void);
extern uint8_t IF_GetShiftLevelPos(void);
extern uint8_t IF_Get_PBPButtonLongPress(void);
extern uint8_t IF_Get_CanTx_ParkButtonSts_VD(void);
extern uint8_t IF_Get_CanTx_ParkButtonSts(void);
extern uint8_t IF_SwitchGetMechErrState(void);
extern uint8_t IF_SwitchGetValue(void);
extern bool IF_GetSwitchState(uint8 SW_INDEX);
extern void IF_SwitchMecFaultClear(void);
extern uint8_t GetSensorFault(uint8_t index);

#endif